package com.fifth.order.service;

import com.fifth.common.pojo.dto.CommonResult;
import com.fifth.common.pojo.entity.Cart;
import com.fifth.common.pojo.entity.Order;
import com.fifth.order.vo.BusinessOrderVo;
import com.fifth.order.vo.GetOrderVo;
import com.fifth.order.vo.PayCartVo;
import io.swagger.models.auth.In;

import java.util.List;

/**
 * @作者：刘壬杉
 * @创建时间 2022/9/1 9:46
 **/
public interface OrderService {
    /**
     * 点击购买按钮立即购买
     * @param order
     * @return
     */
    public CommonResult buyNow(Order order);

    /**
     * 在购物车页面点击去结算,修改购物车中被选中商品的状态,并添加到订单中,返回统一的订单编号
     * @param getOrderVos
     * @return 订单编号
     */
    CommonResult settlement(List<GetOrderVo> getOrderVos);

    /**
     * 根据订单号查询订单信息
     * @return
     */
    CommonResult selectByCode(String code);

    /**
     * 支付当前订单生成二维码
     * @param paysort
     * @param code
     * @return
     */
    CommonResult paySort(Integer paysort, String code);

    /**
     * 根据userid和orderid和支付状态查询订单信息
     * @return
     */
    Order addComment(String code,String goodsid);

    /**
     * 根据条件查询所有订单信息
     * @param pageCurrent
     * @param pageSize
     * @param zhuangtai
     * @return
     */
    CommonResult findOrder(Integer pageCurrent, Integer pageSize, String zhuangtai);

    /**
     * 根据订单id取消订单
     * @param id
     * @return
     */
    CommonResult delOrder(String id);

    /**
     * 根据code删除订单
     * @param code
     * @return
     */
    CommonResult deleteOrder(String code);

    /**
     * 修改订单状态为失效
     * @param code
     * @return
     */
    CommonResult updateStateToFailure(String code);

    /**
     * 根据goodsid获取
     * @param goodsid
     * @return
     */
    Integer getGoodsSellNum(String goodsid);

    /**
     * 结算购物车付款
     * @param payCartVo
     * @return
     */
    CommonResult buyCart(PayCartVo payCartVo);

    /**
     * 库存不足生成支付二维码失败将购物车商品返还
     * @param getOrderVos
     * @return
     */
    CommonResult changeCart(List<GetOrderVo> getOrderVos);

    /**
     * 商家的订单管理的页面加载
     * @param currentPage
     * @param pageSize
     * @param businessOrderVo
     * @return
     */
    CommonResult selectAllOrders(Integer currentPage, Integer pageSize, BusinessOrderVo businessOrderVo);

    /**
     * 根据订单编号修改发货状态
     * @param code
     * @return
     */
    CommonResult updateSend(String code);

    /**
     * 判断该用户是否买过该商品
     * @param id
     * @return
     */
    CommonResult hasBuyThisGoods(String id);

    /**
     * 修改订单评论状态
     * @param goodsid
     * @param uid
     * @return
     */
    Integer updateOrderCommentStatus(String goodsid, String uid);
}
